//
//  BoletoBancoBradesco.m
//  iBoleto
//
//  Created by Diego Fincatto on 14/01/11.
//  Copyright 2011 Wmix Distribuidora Ltda. All rights reserved.
//

#import "BoletoBancoBradesco.h"
#import "BoletoUtil.h"

@implementation BoletoBancoBradesco

@synthesize boletoDados;

- (id)initWithDados:(BoletoDados *)dados {
    if ((self = [super init])) {
        //dados do boleto
		[self setBoletoDados:dados];
        
        //formatador de numeros
        numberFormatter = [[NSNumberFormatter alloc] init];
        [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
        [numberFormatter setDecimalSeparator:@""];
        [numberFormatter setMaximumFractionDigits:2];
        [numberFormatter setMinimumFractionDigits:2];
        [numberFormatter setUsesGroupingSeparator:NO];
	}
	return self;
}

- (NSString*)codigoBanco {
    return @"237";
}

- (NSString*)moeda {
    return @"9";
}

- (NSString*)campoLivre {
    return [NSString stringWithFormat:@"%@%@%@%@%@", boletoDados.agencia, [BoletoUtil strZero:boletoDados.carteira tamanho:2], [BoletoUtil strZero:boletoDados.nossoNumero tamanho:11], [BoletoUtil strZero:boletoDados.codigoFornecidoAgencia tamanho:7], @"0"];
}

- (NSString*)campo1 {
    NSString *campo = [NSString stringWithFormat:@"%@%@%@", self.codigoBanco, self.moeda, [self.campoLivre substringWithRange:NSMakeRange(0, 5)]];
    return [NSString stringWithFormat:@"%@%@", campo, [BoletoUtil calculaDVCampo:campo]];
}

- (NSString*)campo2 {
    NSString *campo = [self.campoLivre substringWithRange:NSMakeRange(5, 10)];
    return [NSString stringWithFormat:@"%@%@", campo, [BoletoUtil calculaDVCampo:campo]];
}

- (NSString*)campo3 {
    NSString *campo = [self.campoLivre substringFromIndex:15];
    return [NSString stringWithFormat:@"%@%@", campo, [BoletoUtil calculaDVCampo:campo]];
}

- (NSString*)campo4 {
    NSString *campo = [NSString stringWithFormat:@"%@%@%@%@%@", self.codigoBanco, self.moeda, boletoDados.fatorVencimento, [BoletoUtil strZero:[numberFormatter stringFromNumber:boletoDados.valor] tamanho:10], self.campoLivre];
    return [BoletoUtil calculaDVCodigoBarras:campo];
}

- (NSString*)campo5 {
    return [NSString stringWithFormat:@"%@%@", boletoDados.fatorVencimento,[BoletoUtil strZero:[numberFormatter stringFromNumber:boletoDados.valor] tamanho:10]];
}

- (NSString*)codigoDeBarras {
    return [NSString stringWithFormat:@"%@%@%@%@%@", self.codigoBanco, self.moeda, self.campo4, self.campo5, self.campoLivre];
}

- (NSString*)linhaDigitavel {
    return [NSString stringWithFormat:@"%@.%@  %@.%@  %@.%@  %@  %@", [self.campo1 substringWithRange:NSMakeRange(0, 5)], [self.campo1 substringFromIndex:5], [self.campo2 substringWithRange:NSMakeRange(0, 5)], [self.campo2 substringFromIndex:5], [self.campo3 substringWithRange:NSMakeRange(0, 5)], [self.campo3 substringFromIndex:5], self.campo4, self.campo5];
}

- (void)dealloc {
    [numberFormatter release], numberFormatter = nil;
    [boletoDados release], boletoDados = nil;
    [super dealloc];
}

@end
